// axios基础的封装
import axios from "axios";
import { ElMessage } from 'element-plus'
import 'element-plus/theme-chalk/el-message.css'

import { useUserStore } from "@/stores/user";

import router from '@/router'


const httpInstance = axios.create({
    baseURL:'http://pcapi-xiaotuxian-front-devtest.itheima.net',
    timeout:10000
})

// 拦截器

// axios请求拦截器
httpInstance.interceptors.request.use(config => {
  const userStore = useUserStore()
  const token = userStore.userInfo.token
  if(token){
    config.headers.Authorization = `Bearer ${token}`
  }


  return config
}, e => Promise.reject(e))

httpInstance.interceptors.response.use(
  res => res.data,
  e => {
    const userStore = useUserStore()

    // 统一提示（如果有响应数据就取 message，否则用默认提示）
    ElMessage({
      type: 'warning',
      message: e.response?.data?.message || '请求失败，请稍后重试'
    })
    

    // 401 token 失效处理
    if (e.response?.status === 401) {
      userStore.clearUserInfo()
      router.push('/login')
    }

    return Promise.reject(e)
  }
)



export default httpInstance